home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / os2 / octa209s.zip / octave-2.09 / libs / kpathsea / tex-file.h < prev    next >
C/C++ Source or Header  |  1995-06-25  |  5KB  |  121 lines

  1. /* tex-file.h: find files in a particular format.
  2.  
  3. Copyright (C) 1993, 94 Karl Berry.
  4.  
  5. This program is free software; you can redistribute it and/or modify
  6. it under the terms of the GNU General Public License as published by
  7. the Free Software Foundation; either version 2, or (at your option)
  8. any later version.
  9.  
  10. This program is distributed in the hope that it will be useful,
  11. but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. GNU General Public License for more details.
  14.  
  15. You should have received a copy of the GNU General Public License
  16. along with this program; if not, write to the Free Software
  17. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.  */
  18.  
  19. #ifndef KPATHSEA_TEX_FILE_H
  20. #define KPATHSEA_TEX_FILE_H
  21.  
  22. #include <kpathsea/c-proto.h>
  23. #include <kpathsea/types.h>
  24.  
  25.  
  26. /* If non-NULL, try looking for this if can't find the real font.  */
  27. extern const_string kpse_fallback_font;
  28.  
  29.  
  30. /* If non-NULL, check these if can't find (within a few percent of) the
  31.    given resolution.  List must end with a zero element.  */
  32. extern unsigned *kpse_fallback_resolutions;
  33.  
  34. /* This initializes the fallback resolution list.  If ENVVAR
  35.    is set, it is used; otherwise, the envvar `TEXSIZES' is looked at; if
  36.    that's not set either, a compile-time default is used.  */
  37. extern void kpse_init_fallback_resolutions P1H(string envvar);
  38.  
  39.  
  40. /* If non-null, used instead of the usual envvar/path defaults, e.g.,
  41.    set to `getenv ("XDVIFONTS")'.  */
  42. extern string kpse_font_override_path;
  43.  
  44. /* We put the glyphs first so we don't waste space in an array.  A new
  45.    format here must be accompanied by a new initialization
  46.    abbreviation below and a new entry in `tex-make.c'.  */
  47. typedef enum
  48. {
  49.   kpse_gf_format,
  50.   kpse_pk_format,
  51.   kpse_any_glyph_format,    /* ``any'' meaning anything above */
  52.   kpse_base_format, 
  53.   kpse_bib_format, 
  54.   kpse_bst_format, 
  55.   kpse_cnf_format,
  56.   kpse_fmt_format,
  57.   kpse_mf_format, 
  58.   kpse_mfpool_format, 
  59.   kpse_pict_format,
  60.   kpse_tex_format,
  61.   kpse_texpool_format,
  62.   kpse_tfm_format, 
  63.   kpse_vf_format,
  64.   kpse_dvips_config_format,
  65.   kpse_dvips_header_format,
  66.   kpse_last_format /* one past last index */
  67. } kpse_file_format_type;
  68.  
  69.  
  70. /* For each file format, we record the following information.  The main
  71.    thing that is not part of this structure is the environment variable
  72.    lists above. They are used directly in tex-file.c. We could
  73.    incorporate them here, but it would complicate the code a bit. We
  74.    could also do it via variable expansion, but not now, maybe not ever:
  75.    ${PKFONTS-${TEXFONTS-/usr/local/lib/texmf/fonts//}}.  */
  76.  
  77. typedef struct
  78. {
  79.   const_string type;        /* Human-readable description.  */
  80.   const_string path;        /* The search path to use.  */
  81.   const_string raw_path;    /* Pre-$~ (but post-default) expansion.  */
  82.   const_string path_source;    /* Where the path started from.  */
  83.   boolean font_override_p;    /* Use kpse_font_override_path?  */
  84.   const_string client_path;    /* E.g., from dvips's config.ps.  */
  85.   const_string cnf_path;    /* From our texmf.cnf.  */
  86.   const_string default_path;    /* If all else fails.  */
  87.   const_string suffix;        /* For kpse_find_file to append, or NULL.  */
  88.   boolean suffix_search_only;    /* Only search if the suffix is present?  */
  89.   const_string program;        /* ``MakeTeXPK'', etc.  */
  90.   const_string program_args;    /* Args to the `program'.  */
  91.   boolean program_enabled_p;    /* Invoke the `program'?  */
  92. } kpse_format_info_type;
  93.  
  94. /* The sole variable of that type, indexed by `kpse_file_format_type'.
  95.    Initialized by calls to `kpse_find_file' for `kpse_init_format'.  */
  96. extern kpse_format_info_type kpse_format_info[];
  97.  
  98.  
  99. /* Initialize the info for the given format.  This is called
  100.    automatically by `kpse_find_file', but the glyph searching (for
  101.    example) can't use that function, so make it available.  */
  102. extern const_string kpse_init_format P1H(kpse_file_format_type);
  103.  
  104. /* If FORMAT has a non-null `suffix' member, concatenate NAME "." and it
  105.    and call `kpse_path_search' with the result and the other arguments.
  106.    If that fails, try just NAME.  */
  107. extern string kpse_find_file P3H(const_string name,  
  108.                             kpse_file_format_type format,  boolean must_exist);
  109.  
  110. /* Here are some abbreviations.  */
  111. #define kpse_find_pict(name) kpse_find_file (name, kpse_pict_format, true)
  112. #define kpse_find_tex(name)  kpse_find_file (name, kpse_tex_format, true)
  113. #define kpse_find_tfm(name)  kpse_find_file (name, kpse_tfm_format, true)
  114.  
  115. /* The `false' is correct for DVI translators, which should clearly not
  116.    require vf files for every font (e.g., cmr10.vf).  But it's wrong for
  117.    VF translators, such as vftovp.  */
  118. #define kpse_find_vf(name) kpse_find_file (name, kpse_vf_format, false)
  119.  
  120. #endif /* not KPATHSEA_TEX_FILE_H */
  121.